open Ast
open Gen
open Arbreintermediaire

type operation = 
  | ADD
  | MIN
  | MUL
  | DIV
  | AND
  | OR
  | NOT

type comparaison = 
  | BLT (* <  *)
  | BGT (* >  *)
  | BLE (* <= *)
  | BGE (* >= *)
  | BEG (* == *)
  | BNE (* <> *)

type instruction =
  | LABEL of label
  | LIST of instruction list
  | LI of register * int
  | MOVE of register * register
	| NOP
  | OPERATION of operation * register * register * register
  | BRANCH of comparaison * register * register * label
  | J of label
  | JAL of label
  | JR of register
  | PRINT

type sFrame =
  SFrame of frame * instruction

type text = {
	stext: instruction;
	sframes : sFrame list
}